Amazon FSx for NetApp ONTAPをTerraformで構築してみた
ゲームソリューション部の えがわ です。
本日はAmazon FSx for NetApp ONTAP(以降FSxN)をTerraformで構築してみました。
Amazon FSx for NetApp ONTAPとは
FSxNは高いパフォーマンスを提供し、バックアップとリストアのプロセスが容易です。
ゲーム業界ではビルド環境やバージョン管理システムのストレージとして、とても適しています。
Amazon FSx for NetApp ONTAP は、 NetAp]pの人気のある ONTAP ファイルシステム上に構築された、信頼性が高く、スケーラブルで、パフォーマンスが高く、機能豊富なファイルストレージを提供するフルマネージドサービスです。FSx for ONTAP は、 NetApp ファイルシステムの使い慣れた機能、パフォーマンス、機能、および API オペレーションと、フルマネージド型の の俊敏性、スケーラビリティ、およびシンプルさを組み合わせますAWS のサービス。
事前準備
VPCの準備
VPCは以下のTerraformで作成しています。
各種パラメータの準備
VPC ID, Subnet ID, CIDRをメモしておきます。
VPC ID, Subnet IDはCLIでも取得できます。
また、FSxNはプライベートサブネットに配置します。
VPC IDの取得
aws ec2 describe-vpcs \ --query 'Vpcs[*].{VpcId:VpcId,Name:Tags[?Key==`Name`]|[0].Value}'\ --output text
Subnet IDの取得
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values={選択したVPC ID}" \ --query 'Subnets[*].{SubnetId:SubnetId,Name:Tags[?Key==`Name`]|[0].Value}' \ --output text
環境構築
リポジトリ
Terraform
resource "aws_security_group" "nfs_sg" { name = "${var.project_name}-nfs-sg" vpc_id = var.vpc_id ingress { from_port = 2049 to_port = 2049 protocol = "tcp" cidr_blocks = [var.vpc_cidr_block] } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_fsx_ontap_file_system" "file_system" { storage_capacity = 1024 subnet_ids = [var.subnet_id] preferred_subnet_id = var.subnet_id deployment_type = "SINGLE_AZ_1" throughput_capacity = 128 security_group_ids = [aws_security_group.nfs_sg.id] fsx_admin_password = var.fsx_admin_password tags = { Name = "${var.project_name}-fsxn" } timeouts { create = "60m" update = "60m" } } resource "aws_fsx_ontap_storage_virtual_machine" "svm" { file_system_id = aws_fsx_ontap_file_system.file_system.id name = "${var.project_name}-svm" } resource "aws_fsx_ontap_volume" "volume" { name = "vol" junction_path = "/vol1" size_in_megabytes = 1048576 storage_efficiency_enabled = true storage_virtual_machine_id = aws_fsx_ontap_storage_virtual_machine.svm.id lifecycle { ignore_changes = [ tiering_policy[0].cooling_period ] } }
Terraformを実行するとファイルシステムの作成に30分ほど(Single-AZ)時間がかかります。
※ファイルシステムの作成だけで24分かかりました。
module.fsxn.aws_fsx_ontap_file_system.file_system: Creating... module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [10s elapsed] module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [20s elapsed] ...中略 module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [24m10s elapsed] module.fsxn.aws_fsx_ontap_file_system.file_system: Still creating... [24m20s elapsed] module.fsxn.aws_fsx_ontap_file_system.file_system: Creation complete after 24m24s [id=fs-xxxxxxxxxxxxxx]
作成したFSxNをEC2にマウントしてみます。
マウントコマンドについてはAWSのマネジメントコンソールから確認できます。
EC2にSSMで接続し表示されているコマンドを実行します。
マウントすることができました!
画像では113GBが使用済みとなっていますが、16%はファイルシステム用に予約されています。
他の NetApp ONTAP ファイルシステムと同様に、ファイルシステムの SSD ストレージ容量の最大 16% は ONTAP オーバーヘッド用に予約されています。つまり、ファイルの保存には使用できません。ONTAP オーバーヘッドは次のように割り当てられます。11% は NetApp ONTAP ソフトウェア用に予約されています。30 テビバイト (TiB) を超える SSD ストレージ容量を持つファイルシステムの場合、6% が予約されています。5% は、ファイルシステムの両方のファイルサーバ間でデータを同期させるために必要な、集約スナップショット用に確保されています。
サイジングについては以下のブログを参考になります。
最後に
FSxNは強力なストレージオペレーティングシステムで、高度なデータ管理機能と優れた拡張性を備えています。
ゲーム業界ではバージョン管理システムやビルド環境のストレージとして、とても適しています。
この記事が参考になれば幸いです。